Micron Document
🎖️GitЯра🎖️

Node / meshcore / MeshCore / files / src / helpers / esp32 / TBeamBoard.h

Displaying Raw • Download

src/helpers/esp32/TBeamBoard.h 5732b2edd8563281ef7d344cd6517f969ca160ab (5732b2ed) Text, 4.89 KB

Tff7b72#Tff7b72pragma once

Tff7b72#Tff7b72if defined(TBEAM_SUPREME_SX1262) || defined(TBEAM_SX1262) || defined(TBEAM_SX1276)

T8b949e// Define pin mappings BEFORE including ESP32Board.h so sleep() can use P_LORA_DIO_1
Tff7b72#Tff7b72ifdef TBEAM_SUPREME_SX1262
T8b949e// LoRa radio module pins for TBeam S3 Supreme SX1262
Tff7b72#Tff7b72define P_LORA_DIO_0 -1 T8b949e//NC
Tff7b72#Tff7b72define P_LORA_DIO_1 1 T8b949e//SX1262 IRQ pin
Tff7b72#Tff7b72define P_LORA_NSS 10 T8b949e//SX1262 SS pin
Tff7b72#Tff7b72define P_LORA_RESET 5 T8b949e//SX1262 Rest pin
Tff7b72#Tff7b72define P_LORA_BUSY 4 T8b949e//SX1262 Busy pin
Tff7b72#Tff7b72define P_LORA_SCLK 12 T8b949e//SX1262 SCLK pin
Tff7b72#Tff7b72define P_LORA_MISO 13 T8b949e//SX1262 MISO pin
Tff7b72#Tff7b72define P_LORA_MOSI 11 T8b949e//SX1262 MOSI pin

Tff7b72#Tff7b72define PIN_BOARD_SDA1 42 T8b949e//SDA for PMU and PFC8563 (RTC)
Tff7b72#Tff7b72define PIN_BOARD_SCL1 41 T8b949e//SCL for PMU and PFC8563 (RTC)

Tff7b72#Tff7b72define PIN_PMU_IRQ 40 T8b949e//IRQ pin for PMU

T8b949e// #define PIN_GPS_RX 9
T8b949e// #define PIN_GPS_TX 8
T8b949e// #define PIN_GPS_EN 7

Tff7b72#Tff7b72define P_BOARD_SPI_MOSI 35 T8b949e//SPI for SD Card and QMI8653 (IMU)
Tff7b72#Tff7b72define P_BOARD_SPI_MISO 37 T8b949e//SPI for SD Card and QMI8653 (IMU)
Tff7b72#Tff7b72define P_BOARD_SPI_SCK 36 T8b949e//SPI for SD Card and QMI8653 (IMU)
Tff7b72#Tff7b72define P_BPARD_SPI_CS 47 T8b949e//Pin for SD Card CS
Tff7b72#Tff7b72define P_BOARD_IMU_CS 34 T8b949e//Pin for QMI8653 (IMU) CS

Tff7b72#Tff7b72define P_BOARD_IMU_INT 33 T8b949e//IMU Int pin
Tff7b72#Tff7b72define P_BOARD_RTC_INT 14 T8b949e//RTC Int pin

T8b949e//I2C Wire addresses
Tff7b72#Tff7b72define I2C_BME280_ADD 0x76 T8b949e//BME280 sensor I2C address on Wire
Tff7b72#Tff7b72define I2C_OLED_ADD 0x3C T8b949e//SH1106 OLED I2C address on Wire
Tff7b72#Tff7b72define I2C_QMC6310U_ADD 0x1C T8b949e//QMC6310U mag sensor I2C address on Wire

T8b949e//I2C Wire1 addresses
Tff7b72#Tff7b72define I2C_RTC_ADD 0x51 T8b949e//RTC I2C address on Wire1
Tff7b72#Tff7b72define I2C_PMU_ADD 0x34 T8b949e//AXP2101 I2C address on Wire1
Tff7b72#Tff7b72define PMU_WIRE_PORT Wire1
Tff7b72#Tff7b72define RTC_WIRE_PORT Wire1
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72ifdef TBEAM_SX1262
Tff7b72#Tff7b72define P_LORA_BUSY 32
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72ifdef TBEAM_SX1276
Tff7b72#Tff7b72define P_LORA_DIO_2 32
Tff7b72#Tff7b72define P_LORA_BUSY RADIOLIB_NC
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72if defined(TBEAM_SX1262) || defined(TBEAM_SX1276)
T8b949e// LoRa radio module pins for TBeam
T8b949e// uint32_t P_LORA_BUSY = 0; //shared, so define at run
T8b949e// uint32_t P_LORA_DIO_2 = 0; //SX1276 only, so define at run

T8b949e// #define P_LORA_DIO_0 26
T8b949e// #define P_LORA_DIO_1 33
T8b949e// #define P_LORA_NSS 18
T8b949e// #define P_LORA_RESET 23
T8b949e// #define P_LORA_SCLK 5
T8b949e// #define P_LORA_MISO 19
T8b949e// #define P_LORA_MOSI 27

T8b949e// #define PIN_GPS_RX 34
T8b949e// #define PIN_GPS_TX 12

Tff7b72#Tff7b72define PIN_PMU_IRQ 35
Tff7b72#Tff7b72define PMU_WIRE_PORT Wire
Tff7b72#Tff7b72define RTC_WIRE_PORT Wire
Tff7b72#Tff7b72define I2C_PMU_ADD 0x34
Tff7b72#Tff7b72endif

T8b949e// enum RadioType {
T8b949e// SX1262,
T8b949e// SX1276
T8b949e// };

T8b949e// Include headers AFTER pin definitions so ESP32Board::sleep() can use P_LORA_DIO_1
Tff7b72#Tff7b72include T8b949e<Wire.h>
Tff7b72#Tff7b72include T8b949e<Arduino.h>
Tff7b72#Tff7b72include T8b949e"XPowersLib.h"
Tff7b72#Tff7b72include T8b949e"helpers/ESP32Board.h"
Tff7b72#Tff7b72include T8b949e<driver/rtc_io.h>

Te6edf3class Te6edf3TBeamBoard Tff7b72: Te6edf3public Te6edf3ESP32Board Tb4b4b4{
Te6edf3XPowersLibInterface Tff7b72*Te6edf3PMU Tff7b72= Tffa657NULLTb4b4b4;
T8b949e//PhysicalLayer * pl;
T8b949e//RadioType * radio = NULL;
T8b949e// int radioVersions = 2;

Tff7b72enum Tb4b4b4{
Te6edf3POWERMANAGE_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4,
Te6edf3DISPLAY_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4,
Te6edf3RADIO_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4,
Te6edf3GPS_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4,
Te6edf3PSRAM_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff4Tb4b4b4)Tb4b4b4,
Te6edf3SDCARD_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff5Tb4b4b4)Tb4b4b4,
Te6edf3AXDL345_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff6Tb4b4b4)Tb4b4b4,
Te6edf3BME280_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff7Tb4b4b4)Tb4b4b4,
Te6edf3BMP280_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff8Tb4b4b4)Tb4b4b4,
Te6edf3BME680_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff9Tb4b4b4)Tb4b4b4,
Te6edf3QMC6310_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4,
Te6edf3QMI8658_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff11Tb4b4b4)Tb4b4b4,
Te6edf3PCF8563_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff12Tb4b4b4)Tb4b4b4,
Te6edf3OSC32768_ONLINE Tff7b72= Te6edf3_BVTb4b4b4(T79c0ff13Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tffa657bool Td2a8ffpower_initTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e//void radiotype_detect();

Te6edf3publicTff7b72:

Tff7b72#Tff7b72ifdef MESH_DEBUG
Tffa657void Te6edf3printPMUTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffscanDevicesTb4b4b4(Te6edf3TwoWire Tff7b72*Te6edf3wTb4b4b4)Tb4b4b4;
Tff7b72#Tff7b72endif
Tffa657void Td2a8ffbeginTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72#Tff7b72ifndef TBEAM_SUPREME_SX1262
Tffa657void Td2a8ffonBeforeTransmitTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3P_LORA_TX_LEDTb4b4b4, Te6edf3LOWTb4b4b4)Tb4b4b4; T8b949e// turn TX LED on - invert pin for SX1276
Tb4b4b4}
Tffa657void Td2a8ffonAfterTransmitTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4{
Te6edf3digitalWriteTb4b4b4(Te6edf3P_LORA_TX_LEDTb4b4b4, Te6edf3HIGHTb4b4b4)Tb4b4b4; T8b949e// turn TX LED off - invert pin for SX1276
Tb4b4b4}
Tff7b72#Tff7b72endif

Tffa657void Td2a8ffenterDeepSleepTb4b4b4(Tffa657uint32_t Te6edf3secsTb4b4b4, Tffa657int Te6edf3pin_wake_btnTb4b4b4) Tb4b4b4{
Te6edf3esp_sleep_pd_configTb4b4b4(Te6edf3ESP_PD_DOMAIN_RTC_PERIPHTb4b4b4, Te6edf3ESP_PD_OPTION_ONTb4b4b4)Tb4b4b4;

T8b949e// Make sure the DIO1 and NSS GPIOs are hold on required levels during deep sleep
Te6edf3rtc_gpio_set_directionTb4b4b4(Tb4b4b4(Te6edf3gpio_num_tTb4b4b4)Te6edf3P_LORA_DIO_1Tb4b4b4, Te6edf3RTC_GPIO_MODE_INPUT_ONLYTb4b4b4)Tb4b4b4;
Te6edf3rtc_gpio_pulldown_enTb4b4b4(Tb4b4b4(Te6edf3gpio_num_tTb4b4b4)Te6edf3P_LORA_DIO_1Tb4b4b4)Tb4b4b4;

Te6edf3rtc_gpio_hold_enTb4b4b4(Tb4b4b4(Te6edf3gpio_num_tTb4b4b4)Te6edf3P_LORA_NSSTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3pin_wake_btn Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3esp_sleep_enable_ext1_wakeupTb4b4b4( Tb4b4b4(T79c0ff1L Tff7b72<Tff7b72< Te6edf3P_LORA_DIO_1Tb4b4b4)Tb4b4b4, Te6edf3ESP_EXT1_WAKEUP_ANY_HIGHTb4b4b4)Tb4b4b4; T8b949e// wake up on: recv LoRa packet
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3esp_sleep_enable_ext1_wakeupTb4b4b4( Tb4b4b4(T79c0ff1L Tff7b72<Tff7b72< Te6edf3P_LORA_DIO_1Tb4b4b4) Tff7b72| Tb4b4b4(T79c0ff1L Tff7b72<Tff7b72< Te6edf3pin_wake_btnTb4b4b4)Tb4b4b4, Te6edf3ESP_EXT1_WAKEUP_ANY_HIGHTb4b4b4)Tb4b4b4; T8b949e// wake up on: recv LoRa packet OR wake btn
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3secs Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3esp_sleep_enable_timer_wakeupTb4b4b4(Te6edf3secs Tff7b72* T79c0ff1000000Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Finally set ESP32 into sleep
Te6edf3esp_deep_sleep_startTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// CPU halts here and never returns!
Tb4b4b4}

Tffa657uint16_t Td2a8ffgetBattMilliVoltsTb4b4b4(Tb4b4b4)Tb4b4b4{
Tff7b72return Te6edf3PMUTff7b72-Tff7b72>Te6edf3getBattVoltageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72const Tffa657charTff7b72* Td2a8ffgetManufacturerNameTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4{
Tff7b72return Ta5d6ff"Ta5d6ffLilyGo T-BeamTa5d6ff"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;

Tff7b72#Tff7b72endif

Served by rngit 1.5.4 - Generated in 0.04s